有時候會在前端收集好需要的資訊,在送回後端做資料的處理,這時候就可以用
Json的格式到後端來做操作。
首先到Github下載.dll來引用
    using Newtonsoft.Json;
先在前端收集好資料後,用JSON.stringify()將物件轉換為Server可以接受的格式String。
   var carObj = {
        COLOR: "red",
        SPEED: 100
    };
    $.ajax({
        url: "../../../Generic/C_sharp.ashx",
        type: "post",
        data: {
            CAR: JSON.stringify(carObj)
        },
        success: function () {
        },
        error: function (e) {
            console.log(e)
            alert(0);
        }
    });
建立一個CAR類別,裡面的欄位記得要設定成public,並且欄位名稱需和前端的物件命名一致,不然它會找不到對應的名稱,而取不到值。
     public class CAR {
        public string COLOR;
        public int SPEED;
    }
使用JsonConvert.DeserializeObject<T>(),將Json轉換成物件。
    public void ProcessRequest(HttpContext context)
    {
        string aCarJson = context.Request.Form["CAR"].ToString();
        //Json 轉 Obj,並直接丟到類別中。
        CAR aCAR = JsonConvert.DeserializeObject<CAR>(aCarJson);        
    }  
此時aCAR可以取得COLOR和SPEED的值了。
不過這只適合只有單一筆的資料處理,如果今天是需要處理多筆數的資料,那就需要稍微做個變化。
前端的物件外層多包一個陣列,若有多筆資料的話,則在.push()到陣列裡面。
    var carObj = {
        COLOR: "red",
        SPEED: 100
    };
    var carObj2 = {
        COLOR: "blue",
        SPEED: 150
    };
    var arr = [];
    arr.push(carObj);
    arr.push(carObj2);
    
    $.ajax({
        url: "../../../Generic/C_sharp.ashx",
        type: "post",
        data: {
            CAR: JSON.stringify(arr)
        },
        success: function () {
        },
        error: function (e) {
            console.log(e)
            alert(0);
        }
    });
後端改用List<T>來接,<T>裡面的T為className,這時候一樣反序列化,即可上桌食用。
    public void ProcessRequest(HttpContext context)
    {
        string aCarJson = context.Request.Form["CAR"].ToString();
        //Json 轉 Obj,並直接丟到類別中。
        //CAR aCAR = JsonConvert.DeserializeObject<CAR>(aCarJson);
        List<CAR> aList = JsonConvert.DeserializeObject<List<CAR>>(aCarJson);
    }